#! /bin/sh

BAK_STA=no;
BAK_NAM="nvr trac";
SRC_DIR=/home/www/svn_repos;
DST_DIR=/home/www/svn_backup;
SCP_DIR=$DST_DIR/scripts;

for x in $BAK_NAM;
	do
		TMP_SRC_DIR=$SRC_DIR/$x;
		TMP_SRC_DAT=`svnlook date $TMP_SRC_DIR | awk '{print $1}'`;
		TMP_NOW_DAT=`date +%Y-%m-%d`;
		
		echo $TMP_SRC_DAT $TMP_NOW_DAT $TMP_SRC_DIR;
		
		if [ "$TMP_SRC_DAT" == "$TMP_NOW_DAT" ]; then
			BAK_DIR=$DST_DIR/$x;
			TMP_BAK_DIR=$BAK_DIR`date +/%Y%m%d`;
			if [ ! -d "$TMP_BAK_DIR" ]; then
				BAK_STA=yes;
				
				echo $TMP_BAK_DIR;
				mkdir -p $TMP_BAK_DIR;
				chmod g+s $TMP_BAK_DIR;
				svnadmin hotcopy $TMP_SRC_DIR $TMP_BAK_DIR >$BAK_DIR/backup_report_$x.log 2>&1;
			fi
		else
			echo $TMP_SRC_DIR": No update today($TMP_NOW_DAT)!";
		fi
	done

if [ "$BAK_STA" == "yes" ]; then
	perl $SCP_DIR/svn_hotcopy_check.pl;
	
	for x in $BAK_NAM;
		do
			BAK_DIR=$DST_DIR/$x;
			
			if [ -d "$BAK_DIR" ]; then
				BAK_DIR_REV=8;
				BAK_DIR_FIL=`ls $BAK_DIR`;
				BAK_DIR_NUM=`ls $BAK_DIR | wc -l`;
				
				echo $BAK_DIR_NUM $BAK_DIR_FIL;
				
				if [ $BAK_DIR_NUM -gt $BAK_DIR_REV ]; then
					BAK_DIR_DEL=$(($BAK_DIR_NUM-$BAK_DIR_REV));
					
					echo $BAK_DIR_NUM $BAK_DIR_REV $BAK_DIR_DEL;
					
					for y in $BAK_DIR_FIL;
						do
							BAK_DIR_DEL=$(($BAK_DIR_DEL-1));
							BAK_DIR_PAH=$BAK_DIR"/"$y;
							
							echo $BAK_DIR_DEL $BAK_DIR_PAH;
							rm -rf $BAK_DIR_PAH;
							
							if [ $BAK_DIR_DEL -eq 0 ]; then
								break;
							fi
						done
				fi
			fi
		done
fi